package DecorateMode.version4;

public class Main {


    public static void main(String[] args) {
        Person xc=new Person("小菜");
        System.out.println("\n第一种装扮：");
        Sneakers pqx=new Sneakers();
        BigTrouser kk=new BigTrouser();
        TShirts dtx=new TShirts();
        pqx.Decorate(xc);
        kk.Decorate(pqx);
        dtx.Decorate(kk);
        //这里是调用dtx的show方法，方法中实现了超类的show方法，在方法中进行了值的判断，
        // 由于不为空，又调用了方法中装配进去的对象的show方法，就这样一级级往上调用，直到调用到最后的父类的show方法为止。
        dtx.Show();
        System.out.println("第二种装扮");
        LeatherShoes px=new LeatherShoes();
        Tie ld=new Tie();
        Suit xz=new Suit();
        px.Decorate(xc);
        ld.Decorate(px);
        xz.Decorate(ld);
        xz.Show();
        System.out.println("第三种装扮");
        Sneakers pqx2=new Sneakers();
        LeatherShoes px2=new LeatherShoes();
        BigTrouser kk2=new BigTrouser();
        Tie ld2=new Tie();
        pqx2.Decorate(xc);
        px2.Decorate(pqx);
        kk2.Decorate(px2);
        ld2.Decorate(kk2);
        ld2.Show();

    }
}
